package fr.afcepf.atod18.restaurants.dao;

import java.util.List;

import org.springframework.orm.hibernate3.support.HibernateDaoSupport;

import fr.afcepf.atod18.restaurants.entity.Restaurant;
import fr.afcepf.atod18.restaurants.entity.TypeCuisine;
import fr.afcepf.atod18.restaurants.idao.IDaoRestaurant;

public class DaoRestaurant extends HibernateDaoSupport implements
		IDaoRestaurant {

	@Override
	public void ajouterRestaurant(Restaurant restaurant) {
		getHibernateTemplate().save(restaurant);
	}

	@Override
	public void modifierRestaurant(Restaurant restaurant) {
		getHibernateTemplate().update(restaurant);
	}

	@Override
	public void supprimerRestaurant(Restaurant restaurant) {
		getHibernateTemplate().delete(restaurant);
	}

	@Override
	public List<TypeCuisine> listerTypeCuisine() {
		return getHibernateTemplate().find("select t from TypeCuisine");
	}

	@Override
	public List<Restaurant> listerRestaurant() {
		return getHibernateTemplate().find("select r from Restaurant");
	}

	@Override
	public List<Restaurant> listerRestaurantByTypeCuisine(int idTypeCuisine) {
		return getHibernateTemplate().findByNamedParam("select r from Restaurant r where r.typeCuisine.id=typ", "typ", idTypeCuisine);
	}

	@Override
	public List<Restaurant> listerRestaurantByRestaurateur(int idRestaurateur) {
		return getHibernateTemplate().findByNamedParam("select r from Restaurant r where r.restaurateur.id=idr", "idr", idRestaurateur);
	}

	@Override
	public List<Restaurant> listerRestaurantByVille(int idVille) {
		return getHibernateTemplate().findByNamedParam("select r from Restaurant r where r.adresse.ville.idville=idv", "idv", idVille);
	}

	@Override
	public List<Restaurant> listerRestaurantByFourchette(double fourchettePrix) {
		return getHibernateTemplate().findByNamedParam("select r from Restaurant r where r.fourchettePrix=fpx", "fpx", fourchettePrix);
	}

	@Override
	public Restaurant chercherRestaurant(int idRestaurant) {
		return getHibernateTemplate().get(Restaurant.class, idRestaurant);
	}

}
